<?php

namespace app\admin\model\manufacture;

use think\Model;

class Equipment extends Model
{
    // 表名
    protected $name = 'manufacture_equipment';
    
    // 自动写入时间戳字段
    protected $autoWriteTimestamp = 'int';

    // 定义时间戳字段名
    protected $createTime = 'createtime';
    protected $updateTime = 'updatetime';
    
    // 追加属性
    protected $append = [
        'status_text',
        'type_text'
    ];
    
    // 状态
    public function getStatusList()
    {
        return [
            'normal' => __('正常'),
            'maintenance' => __('维护中'),
            'fault' => __('故障'),
            'idle' => __('闲置')
        ];
    }

    public function getStatusTextAttr($value, $data)
    {
        $value = $value ? $value : $data['status'];
        $list = $this->getStatusList();
        return isset($list[$value]) ? $list[$value] : '';
    }

    // 类型
    public function getTypeList()
    {
        return [
            'production' => __('生产设备'),
            'auxiliary' => __('辅助设备'),
            'testing' => __('检测设备'),
            'transport' => __('运输设备')
        ];
    }

    public function getTypeTextAttr($value, $data)
    {
        $value = $value ? $value : $data['type'];
        $list = $this->getTypeList();
        return isset($list[$value]) ? $list[$value] : '';
    }

    // 关联设备分类
    public function category()
    {
        return $this->belongsTo('EquipmentCategory', 'category_id', 'id');
    }

    // 关联维护记录
    public function maintenanceRecords()
    {
        return $this->hasMany('Maintenance', 'equipment_id', 'id');
    }

    // 获取设备运行状态
    public function getRunningStatusAttr($value, $data)
    {
        if ($data['status'] == 'normal') {
            return 'running'; // 运行中
        } elseif ($data['status'] == 'maintenance') {
            return 'maintenance'; // 维护中
        } elseif ($data['status'] == 'fault') {
            return 'fault'; // 故障
        } else {
            return 'idle'; // 闲置
        }
    }

    // 获取设备运行状态文本
    public function getRunningStatusTextAttr($value, $data)
    {
        $status = $this->running_status;
        switch ($status) {
            case 'running':
                return '运行中';
            case 'maintenance':
                return '维护中';
            case 'fault':
                return '故障';
            default:
                return '闲置';
        }
    }

    // 获取设备运行状态颜色
    public function getRunningStatusColorAttr($value, $data)
    {
        $status = $this->running_status;
        switch ($status) {
            case 'running':
                return 'success';
            case 'maintenance':
                return 'warning';
            case 'fault':
                return 'danger';
            default:
                return 'info';
        }
    }

    // 获取设备使用率
    public function getUsageRateAttr($value, $data)
    {
        if ($data['status'] == 'normal') {
            return 100; // 正常状态使用率100%
        } elseif ($data['status'] == 'maintenance') {
            return 0; // 维护中不使用
        } elseif ($data['status'] == 'fault') {
            return 0; // 故障不使用
        } else {
            return 0; // 闲置不使用
        }
    }
}
